package com.lipengcheng.item.web;

import  com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lipengcheng.item.pojo.Item;
import com.lipengcheng.item.pojo.PageDTO;
import com.lipengcheng.item.service.IItemService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/item")
@Slf4j
public class ItemController {

    @Autowired
    private IItemService itemService;


    /**
     * 分页查询
     * @return
     */
    @GetMapping("/list")
    public PageDTO<Item> selectPage(@RequestParam(value = "page") Integer page, @RequestParam("size") Integer size){
//        //设置分页参数
//        IPage<Item> page1=new Page<>(page,size);
//        //执行分页查询
//        IPage<Item> itemIPage = itemService.page(page1);
//        //创建返回的对象
//       PageDTO<Item> pageDTO=new PageDTO<>();
//        //获取页面数据
//        List<Item> itemList = itemIPage.getRecords();
//        //获取总条目数
//        long total = itemIPage.getTotal();
//        pageDTO.setList(itemList);
//        pageDTO.setTotal(total);
//        return pageDTO;
        // 分页查询
        Page<Item> result = itemService.page(new Page<>(page, size));
        // 封装并返回
        return new PageDTO<>(result.getTotal(), result.getRecords());
    }

    /**
     * 根据id查询商品
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Item getById(@PathVariable("id")Long id){
        Item item = itemService.getById(id);
        return item;
    }

    /**
     * 新增商品
     * @param item
     */
    @PostMapping
    public void add(@RequestBody Item item){
        //转时间格式
        Date date = Date.from(LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)));
        //设置创建时间为当前时间
        item.setCreateTime(date);
        //设置修改时间为当前时间
        item.setUpdateTime(date);
        item.setCommentCount(0);
        item.setSold(0);
        item.setStatus(2);
        itemService.save(item);
    }

    /**
     * 商品上架下架
     * @param id
     * @param status
     */
    @PutMapping("/status/{id}/{status}")
    public void updateStatus(@PathVariable("id")Long id,@PathVariable("status") Integer status ) {
        log.info("商品上架下架:,{},{}",id,status);
        itemService.updateStatus(id,status);
    }

    /**
     * 修改商品
     * @param item
     */
    @PutMapping
    public void update(@RequestBody Item item){
         itemService.updateById1(item);
    }

    /**
     * 根据id删除商品
     * @param id
     */
    @DeleteMapping("/{id}")
    public void  deleteById(@PathVariable("id") Long id){
        log.info("根据id删除商品,id: {}",id);
        itemService.deleteById(id);
    }

    /**
     * 扣减库存接口
     * @param itemId
     * @param num
     */
    @PutMapping("/stock/{itemId}/{num}")
    public void reduceStock(@PathVariable Long itemId,@PathVariable Integer num ){
        itemService.reduceStock(itemId,num);
    }

}
